Non-photorealistic images are rendered from 3D models by projecting polygons that make up the 3D model onto a 2D surface and shading the polygons. The polygons are shaded to achieve a cartoon-like effect that does not too closely approximate real life. Existing shading techniques include determining shading values for vertices of the polygons and shading the polygons based on those shading values.